<?php
namespace Framework;
use PDO;
class Database{
    public $conn;
    /**
     * Database 类构造器
     * 
     * @param array $config
     */
    public function __construct($config){
        $dsn="mysql:host={$config['host']};port={$config['port']};dbname={$config['dbname']}";

        $options=[
            PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_OBJ
        ];
        try{
        $this->conn=new PDO($dsn,$config['username'],$config['password'],$options);

    }catch(\PDOException $e){
        throw new \Exception("数据库连接失败：{$e->getMessage()}");
    }
}
/**
     * 执行数据库请求
     * 
     * @param string $query
     * @return PDOStatement
     * @throws PDOException
     */
    public function query($query, $params = []){
        try{
            $sth=$this->conn->prepare($query);

            foreach($params as $param => $value){
                $sth->bindValue(':' . $param,$value);
            }
            $sth->execute();
            return $sth;
        }catch(\PDOException $e){
        throw new \Exception("数据库请求执行失败：{$e->getMessage()}");
        }
    }
    
}